C语言中^的问题

来源:百度知道 编辑:UC知道 时间:2024/05/05 10:41:47
请讲解下下面这段代码的意思。特别是 x=(a^b)&c; 这一句的解释。其中^有什么用?用于什么?
#include <stdio.h>
main(){
int a=1,b=2,c=3,x;
x=(a^b)&c;
printf("%d\n",x);
getch();
}

^意思是异或,二进制表示中,相异则为1,例如0^1=1,但是1^1=0,0^0=0。
所以把a写为0001,b为0010,c为0011
首先a^b结果是0011
然后0011&c结果是0011,x为3。

其中&意思是都为1,结果才为1。
例如1&1=1, 0&1=0, 0&0=0。

^是异或操作。&是按位与操作。
异或
1.先说异或的逻辑符号:^.
2.异或的逻辑定义:真^真=假
真^假=真
假^真=真
假^假=假。
3.计算机中的逻辑运算用1表示真,0表示假。
4.两个字节按位异或的例子:
01111001
11100111^
-------------------
10011110

按位与
按位“与”运算符 (&)
对两个表达式执行按位“与”。
result = expression1 & expression2
参数
result
任何变量。
expression1
任何表达式。
expression2
任何表达式。
说明
& 运算符查看两个表达式的二进制表示法的值,并执行按位“与”操作。该操作的结果如下所示:
0101 (expression1)
1100 (expression2)
----
0100 (result)
任何时候,只要两个表达式的某位都为 1,则结果的该位为 1。否则,结果的该位为 0。

^是按位异或运算符,而&是个按位与运算符
a=1,二进制表示为00000000 00000001
b=2,二进制表示为00000000 00000010
a^b=00000000 00000011 也就是十进制的3

c=3,二进制表示为00000000 00000011
这样(a^b)&c=00000000 00000011,也就是十进制的3
答案应为3